home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / dviware / quicspool / libqmsquery / qmsram.y < prev    next >
Text File  |  1990-10-01  |  1KB  |  80 lines

  1. %{
  2. #ifndef lint
  3. static char *rcs = "$Header: qmsram.y,v 1.1 88/01/15 12:19:35 simpson Rel $";
  4. #endif
  5. /*
  6. $Log:    qmsram.y,v $
  7.  * Revision 1.1  88/01/15  12:19:35  simpson
  8.  * initial release
  9.  * 
  10.  * Revision 0.1  87/12/11  17:12:12  simpson
  11.  * beta test
  12.  * 
  13. */
  14. #include <stdio.h>
  15. #include <setjmp.h>
  16. #include <local/standard.h>
  17. #include "qms.h"
  18.  
  19. extern FILE *_Ifp, *_Ofp;
  20. extern Boolean    _FirstChar;
  21. static jmp_buf    Env;
  22. static struct qmsram    Result;
  23. %}
  24. %token RAM TRT ART FRT ORT INTEGER ENDLINE
  25. %%
  26. ramline : RAM valuelist ENDLINE ;
  27.  
  28. valuelist : valuelist value optcomma | /* epsilon */ ;
  29.  
  30. value :
  31.     TRT '=' INTEGER
  32.     {
  33.         Result.TR = $3;
  34.     }
  35.     |
  36.     ART '=' INTEGER
  37.     {
  38.         Result.AR = $3;
  39.     }
  40.     |
  41.     FRT '=' INTEGER
  42.     {
  43.         Result.FR = $3;
  44.     }
  45.     |
  46.     ORT '=' INTEGER
  47.     {
  48.         Result.OR = $3;   
  49.     }
  50.     ;
  51.  
  52. optcomma : ',' | /* epsilon */ ;
  53. %%
  54. #include "qmsramlex.c"
  55.  
  56. struct qmsram *qmsram()
  57. {
  58.     _FirstChar = TRUE;
  59.     fputs(QUICON, _Ofp);
  60.     fprintf(_Ofp, "%s00000", SYNTAX);
  61.     fprintf(_Ofp, "%sRAM%s", INFO, ENDCMD);
  62.     fputs(QUICOFF, _Ofp);
  63.     (void)fflush(_Ofp);
  64.     if (setjmp(Env)) {
  65.     while (timedgetc(_Ifp) != EOF)    /* Discard remaining input */
  66.         ;
  67.     return NULL;
  68.     }
  69.     if (yyparse() != 0)
  70.     return NULL;
  71.     yysptr = yysbuf;        /* Resets lex lookahead buffer */
  72.     return &Result;
  73. }
  74.  
  75. static yyerror(s)
  76. char    *s;
  77. {
  78.     longjmp(Env, TRUE);
  79. }
  80.